package asem.ast.sentencias;

import asem.ast.expresiones.NodoExpresion;
import asem.excepciones.ExcepcionTiposIncompatibles;
import asem.tablaSimbolos.tipo.Tipo;

public class NodoAsignacion extends NodoSentencia {
	protected NodoIDEncadenado ladoIzquierdo;
	protected NodoExpresion expresion;

	public NodoAsignacion(NodoIDEncadenado lista, NodoExpresion exp) {
		ladoIzquierdo = lista;
		expresion = exp;
	}

	public void chequeoSentencias() {
		Tipo tipoLadoIzquierdo = ladoIzquierdo.chequeoSentencias();
		Tipo tipoExpresion = (Tipo) expresion.chequeoSentencias();

		if (!tipoLadoIzquierdo.compatible(tipoExpresion))
			throw new ExcepcionTiposIncompatibles(
					ladoIzquierdo.getIdentificador(), tipoLadoIzquierdo,
					tipoExpresion);
	}
}
